There are three major types of transmissions on a communications network, unicast, broadcast and multicast. Unicast transmissions are direct transmissions between two nodes of the network, such as when one node is downloading data from another. Broadcast transmissions are transmissions from one node to all the other nodes, such as network control information from the central node to all the other nodes. Multicast transmissions are transmissions from one node to a few of the other nodes, such as when multiple “clients” request to receive regular reports from a “source” (e.g. clients to a news feed).
Reference is now made to FIG. 1 which illustrates an exemplary network of three nodes 1, 2 and 3, connected in series on a wired network. Node 1 is connected to a client device A and node 3 is connected to a client device B. Device A sends and receives transmissions via node 1 and device B sends and receives transmissions via node 3. For example, device A may be the source address (SA) and device B may be the destination address (DA) of a packet sent from device A to device B. For unicast transmissions, the nodes in the network determine, using the unicast routing tables, which are either calculated locally or by a central node such as a domain master (which, in FIG. 1 is node 2), which nodes may be used as relays to reach other nodes. The unicast routing tables are built using the information advertised by each node regarding its list of clients and the network nodes that are in its visibility (i.e. that it has physical links with them). Each node listens to the transmission of the other nodes to determine with which nodes it may potentially have a direct physical link. Using the unicast routing tables, node 1, for example, can determine that a packet sent from its client device A to device B needs to be sent to node 3, which has device B as its client. Furthermore, regardless of whether or not node 3 is visible to node 1, node 1 knows from the unicast routing tables that it has to send all packets designated to node 3 via node 2.
In this example, node 3 is a hidden node to node 1 and node 2 is defined in the unicast routing table as a relay to be used by node 1 to reach node 3.
This method works well for unicast transmissions. However, it does not work for multicast transmissions which want to minimize the number of transmissions needed. In unicast transmissions, each node can read the DA of a client in a sent packet, each node can determine behind which node the client is situated, and each node knows whether it is a relay to that node or not. For example when node 2 receives a packet from node 1 with a DA of device B, it knows from the unicast routing tables that device B is a client of node 3 and that it has to send the packet as a relay to node 3. For multicast packets, the DA is a multicast DA and not an address of a certain client, hence not all the nodes in the network can extract from this DA the list of nodes that need to get the packet. The connection between the multicast DA and the clients to which the packet has to be sent is determined prior to the sending of the message by a special join message request sent out by the clients or by an internal decision made by the source node. When a join message is used, it is sent directly to the node where the source of the multicast traffic resides and not to all nodes of the network. Moreover, since the join request is stored in the payload of the packet, only the nodes that are connected to the clients and to the source can decode the join message, especially when the network uses encryption. Hence, all the other nodes in the network do not understand which nodes need to receive the multicast packet.